home *** CD-ROM | disk | FTP | other *** search
- Short: Powerful debugger/system monitor
-
- feature list
- ------------
-
- o Fullscreen debugger
-
- o Full symbolic debugging
-
- o Very powerful tracing and breakpoint commands. You can trace until
- a certain condition becomes true, or trace just before the next
- branch, or trace until a certain register changes, ... PowerVisor has
- profiler breakpoints, conditional breakpoints and a lot more
-
- o Primitive source level debugging (C, assembler, ...) In future
- more will be possible
-
- o PowerVisor is compatible with the 68000, 68020 and 68030. The 68040
- is also supported (in the disassembler for example) although some
- features don't work on that processor (like memory protection) due
- to lack of information
-
- o Memory protection system. With this system you can read or write
- protect ranges of memory for all or some tasks
-
- o PowerVisor can show the MMU registers and special 68020/30 registers
-
- o Primitive floating point support (display and modify registers). In
- future more will be possible (like expressions)
-
- o Powerful ARexx interface
-
- o Intuition menus and gadtools scrollbars (AmigaDOS 2.0 version only)
-
- o The PowerVisor screen is a public screen (only for AmigaDOS 2.0)
-
- o Powerful expression evaluator. Almost all C operators are supported
- and some additional operators as well
-
- o Online help system with AmigaGuide or MultiView (for AmigaDOS 3.0)
- or internal system
-
- o Very customizable: screen or window on WorkBench, fonts, colours,
- menus, multiple windows, ...
- You can add your own PowerVisor commands with aliases
- All keys can be redefined and you can add macros or commands to
- any key you want
-
- o You can call any library function you want from within PowerVisor.
- With this feature you can test existing library functions or you
- can test your own libraries
-
- o Powerful stack usage checker. With this command you can see how
- much stack a program uses
-
- o Resource tracker. With this command you can see how much memory
- a program allocates (and how much memory it doesn't deallocate),
- all allocated signals, all locks and open files
-
- o Profiler. With this system you can see which routines use much
- CPU time and are useful to optimize
-
- o Crash trapping
-
- o You can kill and freeze tasks
-
- o Powerful tag and structure system. With this system you can define
- structures in PowerVisor. The disassembler will recognize these
- structures if possible and it will use names for all offsets instead
- of numbers. This makes debugging a lot easier
-
- o PowerVisor can list almost anything: tasks, libraries, devices, ports,
- resident modules, autoconfig devices, dos devices, windows, screens,
- fonts, ...
- In addition PowerVisor can dump the internal structures of many
- operating system elements like tasks, processes, CLI structures, ...
-
- o You can open any Exec device from within PowerVisor and send commands
- to it. This is useful for debugging your own devices
-
- o You can monitor the usage of a library function. Each time the
- library function is called PowerVisor will perform some action (like
- printing a message, or storing the information from the call in a
- buffer, or simply blinking the powerled)
-
- o PowerVisor can list the gadgets of a window
-
- o PowerVisor can remove a lot of things like tasks, resident modules,
- input handlers, windows, screens, ...
-
-
-
-
-
-
-
-
-
-
- - New '#' operator to get the address for a linenumber in the
- currently loaded source
- - It is now possible to issue ARexx commands to PowerVisor even when
- PowerVisor is in hold mode
- - The speed of PowerVisor output has been greatly enhanced. I don't
- use RawDoFmt anymore for the conversion of an integer to a
- hexadecimal string. The speed difference is very large with
- the 'memory' command
- - Better floatingpoint support with 'fregs' and 'float'
- - The complete documentation has been converted to AmigaGuide
- (© Commodore) format. There are four new standard alias commands
- provided for easy access to the documentation from within
- PowerVisor. With 'ahelp' you simply go to the main screen, with
- 'cmdhelp' you can ask help about any command, with 'funhelp' you
- can ask help about any function and with 'index' you can search
- any topic you want in the complete PowerVisor hypertext manual.
- Note that you need AmigaGuide to be able to use these four new
- aliases
- - New install script for AmigaDOS 2.0 which makes use of the
- wonderful 'Installer' program (© Commodore). It is highly
- recommended that you install PowerVisor with this script
- (if you have AmigaDOS 2.0 of course)
- - Instead of \0a it is now possible to use \n. This is more
- intuitive
- - New 'appendto' command to append the output of a command to
- a file. This new command is completely equivalent to the 'to'
- command except that the output is appended to a (possibly)
- existing file
- - Four new aliases in 's:pv/ExtraAliases': 'm0', 'm1', 'v0' and 'v1'.
- With these aliases you can go back with 'memory' and 'view'
- - The restriction that there can only be one PowerVisor in memory
- at the same time is removed. You can now run as many instances
- of PowerVisor as you wish (and as memory permits). However, only
- the first (the master) PowerVisor traps crashes and allows
- debugging. The name of the ARexx port, the PowerVisor port, the
- input handler and the public screen are extended with a dot ('.')
- and the number of the slave (starting with 1). The master instance
- does not have this extension
- - New 'pv' constant to ask the number of the PowerVisor instance
- (0 = master, 1 = first slave, ...)
- - New 'pubscreen' function to get the name of the public screen
- for this instance. Very useful for ARexx scripts
- - New 'arexxport' function to get the name of the ARexx port
- for this instance. Very useful for ARexx scripts
- - New '-c' commandline option to skip the reading of the
- PowerVisor-config file. PowerVisor uses all the default values
- - New '-s' commandline option to skip the reading of the
- PowerVisor-startup script
- - New 'a' option for 'attach' so that a command is always executed
- (invisible) even if PowerVisor is busy doing something else
- - The 'string' command has a new optional argument for the maximum
- length of the returned string
- - New 'getline' function to get the pointer to the line on the
- current position
- - Added new hilighting technique to the window system: inverse video
- - New 'ListEnv.pv' script for a specialized list environment (see
- the script for more information)
- - New \01, \02, \03 and \04 characters useful for hilighting text
- on the PowerVisor window
- - New optional argument for 'debug n' and 'debug c'. Normally those
- two commands waited for the next process or task. With this
- optional argument you can wait for the n'th process or task with
- n greater than 1. This is useful if you want to debug a task
- that is started immediately after a certain program runs (for
- example)
- - The 'stru' list (the list containing all structure definitions)
- now always contains some structures that were already present in
- PowerVisor but not accessible until now. You can now use 'peek'
- and 'apeek' to read or write values in the standard structures
- (like 'task', 'proc', 'cli', 'wins', ...)
- - MAJOR MAJOR MAJOR MAJOR!!!!!!!!!!!!!!!!!!!!!!!
- AT LAST! The MMU memory protection system is here and it even
- works! All you need is a 68020 with a 68851 or a 68030 (at this
- moment the 68040 is not supported) and you can use this extremely
- powerful feature. You can protect any region of memory for write
- access or for read access
- - The new MMU memory protection system uses the already existing
- tag system to describe the protected regions. The 'addtag' command
- has been extended to allow for extra protection flags for a region
- of memory. The 'tags' command has been extended to show these
- extra flags
- - New 'watch' command to enable the new memory protection system.
- This command also moves the VBR to another position so that writing
- in low memory is not as harmful anymore
- - New 'protect' command to protect memory according to the current
- tag list. Use this command in combination with 'watch'
- - New 'getmmuentry' function for some specialized control over the
- new MMU features
- - Three new scripts ('ProtectRCustom', 'ProtectWCustom' and
- 'StopCustom') to protect illegal custom chip access. These scripts
- make use of the new memory protection system
- - New 'tagtype' command. With this command you can assign a certain
- tag list for the protection of one task only. In this manner you
- can protect regions for one task but not for the others, or you
- can have other protection characteristics for each task. For
- example: task 1 may write on some region but can't read while
- another task can read but not write on the same region (or part
- of it)
- - Disassembler is a bit faster (10000 instructions disassemble in
- 35 seconds instead of 46 (still no blazing speed however))
- - MAJOR: Disassembler understands tags and structures when you are
- debugging (in the debug display). An example: If a1 contains a
- pointer to a structure in memory and there is a tag for this
- memory that defines the structure, then the instruction:
- MOVE.L (<offset>,A1),D0
- will automatically be disassembled as:
- MOVE.L (<name of offset>,A1),D0
- The only thing you need to do to get this feature is to load
- all needed structures with 'addstruct' and define your memory
- regions with 'addtag'
- - There is also a new 'TypeMemory' script that defines tags
- for some standard structures
- - New 'struct' command. With this command you can make and change
- structures in an interactive way. This is VERY useful in combination
- with the tag system and the structure offset disassembly mentioned
- above. You can also save the newly made structures. So you don't
- have to use 'mstruct' (external utility) anymore to make a simple
- structure you were only going to use once anyway
- - The loading of symbols is a LOT faster. Loading 1850 symbols used
- to take about 34 seconds. Now it only takes 3 seconds!
- - All PowerVisor windows now share the same port. This means that you
- can open as many windows as memory permits. There is no longer a
- limit of five windows
- - Added '_node' standard structure to the 'stru' list
- - New 'fd6' alias in 's:pv/ExtraAliases' to load the fd-file
- corresponding to the library currently in @a6 (while debugging)
- - Totally new internal memory mamagement system.
- advantages :
- o No more MungWall hits
- o Slightly faster
- o Compatible with all possible future operating systems (this
- was not completely the case for the previous memory management
- system)
- disadvantages
- o PowerVisor uses somewhat more memory
- - New 'pvmem' command to see how PowerVisor uses memory (only useful
- for PowerVisor debugging purposes)
- - PowerVisor detaches from the CLI (only if you have AmigaDOS 2.0
- or higher)
- - New commandline option '-d' to disable detaching
- - New 'a' option in 'source' command. With this option you can show
- the source starting with another label
- - New 'h' option in 'source' command. With this option you can lock
- the source logical window. When this is done, the source will no
- longer follow the program counter
- - 'refresh' (with the 'refresh' command) will from now on also work
- when you have activated another PowerVisor (or physical) window.
- You need not activate the 'Main' physical window anymore (Note!
- This is only true while another POWERVISOR window is active)
- - New support for scrollbars (with GadTools, so this feature only
- works for the AmigaDOS 2.0 version) in logical windows so that you
- can scroll in the window with the mouse. This feature is disabled
- by default. Use 'mode sbar' to enable it (and 'mode nosbar' to
- disable it again)
- - New flags in logical window for scrollbars
- - The 'Source' logical window has seperate scrollbar handling
- routines. Instead of scrolling the logical window, the scrollbar
- in the 'Source' logical window scrolls in the loaded file
- - The 'Source' logical window always has a scrollbar (note that
- you can change this with the 'prefs' command). NOTE! This feature
- is NOT true if you still work with an old 'PowerVisor-config'
- file. Delete this file (or use 'prefs logwin ...' and 'saveconfig'
- manually if you have an old (pre-V1.40) configuration file
- - The 'Debug' and 'Source' logical windows now refresh correctly in
- all circumstances
- - 'pvcall 65' is obsolete and is replaced by an equivalent, but
- less powerful, routine (so scripts using 'pvcall 65' will not
- crash)
- - New powerful 'prof' command for profiling. With this command you
- can monitor a task you are debugging. Using this feature you can
- choose which routines are candidates for optimization
- - New 'debug q' option to prevent a debug task from quiting. This
- is useful in combination with the profiler. Normally when a debug
- tasks quits, all symbols are removed. All information in the
- profiler table would loose its meaning. To prevent this you can
- use 'debug q'
- - New 'AllocSignal', 'CreateMsgPort', 'CreateIORequest', 'Lock',
- 'UnLock', 'Open', 'Close', 'OpenFromLock', 'DupLock',
- 'DupLockFromFH', 'AllocRaster' and 'FreeRaster' patches in 'track'
- command (resource tracker)
- - Bug fix: it was not possible any more to run more than two instances
- of PowerVisor at the same time
- - Bug solved in the AmigaDOS 1.3 version of PowerVisor: the 'stack'
- and 'prof' commands probably never worked at all! I never tested
- these two commands in AmigaDOS 1.3. The bug is now fixed
- - Menu file has been enhanced a little bit
- - New 'mode dirty' and 'mode nodirty' options to allow debugging
- programs that use 'trap' instructions. When 'mode dirty' is on
- PowerVisor will correctly execute the trap handler the program
- installed, but this option is not on by default because it is
- not very system friendly (it patches some exception vectors which
- are considered private) and it makes debugging a little bit slower
- (especially conditional tracing and such). When 'mode nodirty'
- is on your Amiga will crash when you try to debug programs that
- use 'trap' instructions. You are warned!
- - The 'quit' command did not work on 68000 Amiga's (Why does one
- need this command anyway :-)
- - 'trace c' (conditional tracing) is a little bit faster
- - 'trace r' (register tracing) is a little bit faster
- - New 'trace q' (quick conditional tracing) for faster conditional
- tracing. The advantage of this new command is that it is a lot
- faster (compared with 'trace c'). The disadvantage is that it only
- works with very primitive expressions (it uses a simple expression
- compiler)
- - 'mmurtest' and 'mmuwtest' are removed since they didn't seem to
- give any useful information and I was hunting for routines to
- optimize (removing a complete routine is one of the best possible
- optimization methods :-)
- - Solved little bug in floatingpoint debugging in combination with
- AmigaDOS 3.0
- - PowerVisor uses NewLook menus if you have AmigaDOS 3.0
- - New 'trace gf', 'trace qf', 'trace cf' and 'trace rf' commands.
- These commands are equivalent to 'trace g', 'trace q', 'trace c'
- and 'trace r' respectivelly. The difference is that the conditional
- test to stop tracing is only done when a change of programflow
- occurs. This is a lot faster but somewhat less accurate. These
- four new commands only work if you have a 68020 or higher in your
- Amiga
- - I finally located and solved the bug that haunted the AmigaDOS 1.3
- version of PowerVisor. I THINK that debugging works perfectly
- now in AmigaDOS 1.3 with a 68000 (or any other) processor
- - Stacksize for programs to debug is set to 20000 instead of 10000
- (in future it will be possible to change this number without
- having to reassemble PowerVisor :-)
- - From now on it is also allowed to type 'a = 3' instead of
- 'a=3'. In other words, you may put spaces round the '=' in an
- assignment. Note that it is still not possible to use spaces
- in expressions. Thus 'a=a + 1' is still not valid
- - PowerVisor no longer crashes when it can't find a source file
- for the sourcelevel debugger
- - s:pv/PrintMode.pv is updated for the new 'mode' arguments
- - Little bug fixed in 'info', 'list exec', 'interprete', ... when
- the PowerVisor window only has 80 columns. In that case, each
- output line would not fit on one line. This is now fixed
- - 'duse' correctly refreshes the source logical window
- - Refreshing of the 'debug' and 'source' logical windows is
- better. The windows are correctly refreshed in combination with
- the 'duse', 'dwin' and 'swin' commands. This was not the case
- in earlier versions of PowerVisor
- - The 'with', 'tg', 'on', 'appendto' and 'to' commands remember the
- result from the command that is executed.
- Using this feature you can, for example, transfer register values
- from one debug task to another
- - 'with' works better in combination with the fullscreen debugger.
- The fullscreen debug display is not refreshed with the 'with'
- command
- - New floating point routines (Adriaan vd Brand). The 'fregs' and
- 'float' commands are now fully functional
- - Bug solved in 'mode' command. Some arguments prevented the
- proper execution of the other arguments. This could even
- cause crashes in some weird cases (this probably solved the bug
- that caused some strange crashes about once in a month)
- - 'mode' command is a lot better. Less flashing, less buggy and
- the 'mode' settings are restored when there is an error. It is
- also possible to type 'mode no lace' instead of 'mode nolace'
- (the old format is still supported). In other words, the 'no'
- keyword is considered seperate. This keyword also works for
- flags which are not toggles, but the meaning of this is not
- always very useful (for example, you can do 'mode no pal'. The
- result will be that PowerVisor switches to the default monitor)
- - 'mode patch' now works from the beginning. This should solve some
- debugging problems on some Amiga's
- - 'mode viking' is renamed to 'mode a2024'
- - New 'default', 'euro36', 'euro72', 'sup72' and 'super' arguments
- for 'mode' command (support for extra ECS screen modes)
- - All signals are freed on exit
- - New 'dprevi' and 'dnexti' commands to scroll in the fullscreen
- debugger instruction by instruction. The 'dnexti' command works
- perfectly in all cases but the 'dprevi' command can fail and go
- back to the wrong instruction. If that is the case, simply
- run 'dprevi' again, and chances are that everything will be ok
- again
- - The new 'dprevi' and 'dnexti' commands are attached to the
- <ctrl>-<up> and <ctrl>-<down> keys. You can still use <ctrl>-<left>
- and <ctrl>-<right> to scroll in multiples of 2 bytes
- - 'StackPtr' is replaced by 'StackU' in task listing (stack usage
- is more useful than the stackpointer which you can see with the
- 'info' command anyway)
- - The 'getstack' function will compute the REAL maximum used stack
- size instead of an estimate
- - The output for commands like 'list', 'vars', 'alias', ... is a LOT
- faster. This is significant if you want to use the 'refresh'
- command
- - 'info' did not seem to work for function monitor nodes (made with
- 'addfunc') with type 'fullled'. The display for the first task was
- correct, but not for all following tasks
- - 'pathname' and 'unlock' were to critical in their test to see if
- the argument is really a lock
- - Interrupting the 'lock' listing will (at last!) give a 'Break...'
- message. This bug was harmless but I fixed it anyway :-)
- - Bug solved in 'to' command. If the 'to' command failed because
- you didn't specify the second argument (the 'command' to execute)
- the file would not be closed
- - Similar bug fixed in 'tg' command. If you didn't specify the
- 'command' argument, the current tag list would not be restored
- to the original value. This is of course less harmful than the
- previous bug
- - New fields in task structure ('_task' in 'stru' list and 'info'
- command) : 'TC_FLAGS', 'TC_LAUNCH' and 'TC_SWITCH'
- - Some fields have changed their name (because they wouldn't fit
- in the available space). Especially in the ExecBase and
- GraphicsBase structures ('exec' and 'graf' lists)
- - Bug fixed in the execution of macros (with 'attach' command) and
- the output for ARexx macros (with 'rx'), Refresh (with 'refresh')
- and PortPrint (with an external program using the 'PowerVisor'
- library). Sometimes the output of the macro would not appear
- on the current logical window, but on the special current logical
- window for the previously mentioned type of output ('Rexx',
- 'Refresh' or 'PPrint' logical windows)
- - New 'p' and 'pf' options for the 'trace' command ('pf' is only
- for 68020 or higher) for 'profile tracing'. With this feature
- you can get the exact amount of times each symbol in your
- program is called (with the 'pf' option) or simply passed
- (with the 'p' option). This command makes use of the profiler
- system that was already present with the 'prof' command. It may
- seem unbelievable, but this new command is implemented with only
- 12 extra machinelanguage instructions (no macros!), one extra
- byte in a string and one extra longword in a table!
- - New 'getsymstr' function to get the name of the symbol on an
- address (not for general use)
- - 'quit' will ask for confirmation if the user wants to quit
- while there are still some debug nodes in memory
- - New 'symbol t' command to remove all temporary symbols from the
- symbol table. Temporary symbols are symbols that start with a
- dot '.' or end with a '$' and only contain digits
- - The 'refresh command' (the command that is executed once in a
- while by the refresh handler (see 'refresh')) starts a new page
- at each tick (a new logical page). This means that there will be
- no more wrong -MORE- messages when the 'refresh' logical
- window is not open
- - Bug fixed in 'colrow' and 'setfont'. These two commands would
- ignore the settings set with 'colrow' (yes, 'colrow' ignored
- the settings set by 'colrow' :-) for standard logical windows.
- For all other logical windows (opened with 'openlw') the
- 'colrow' command worked fine
- - Most commands which have a logical window as an argument check
- if the argument is really a logical window (a simple consistency
- check)
- - When you used 'screen 0' or 'screen <other screen>' (so that
- the PowerVisor 'main' window is no backdrop window) PowerVisor
- would not activate this window automatically
- - Bug solved in 'rblock' command. When this command failed (because
- there was no disk in the drive for example), the allocated memory
- would not be freed correctly. This could cause crashes
- - Bug solved in 'loadtags' and 'savetags'. 'loadtags' would not work
- if there was a tag definition for address 0 in the file. The
- disadvantage of the fix is that tag files are NOT compatible
- anymore!!! If you have important tag files you can fix them by
- changing the last four bytes of the file (this should be 00000000)
- to FFFFFFFF (-1)
- - I FINALLY solved the bug that's been haunting me for years
- (literally)! This bug involved the 'front', 'hold', 'screen' and
- 'mode' commands. Whenever PowerVisor temporarily closes its
- screen there was a potential problem. This problem was almost
- always noticable when you issued a 'front' command from within
- ARexx when PowerVisor was in hold mode. This would cause an
- almost certain crash. If you had unexpected crashes using 'mode',
- 'screen' or 'hold', these would probably be caused by this bug.
- But don't despair! The bug has been fixed!!! I checked my private
- history file and I think that this bug must have been made on 5
- January 1991 (the introduction of the current window system for
- PowerVisor)
- - It is now possible to execute ARexx commands with output while
- PowerVisor is in hold mode without crashing the system (for one
- thing because of the bug fix mentioned above and also because of
- yet another bug fix)
- - Commands like 'scan' and functions like 'key' are now safe to
- use when PowerVisor is in hold mode (This means that '-MORE-'
- also works). These commands and functions are simply ignored
- while in hold mode. Also commands like all the logical window
- commands, the physical window commands, 'mode' for screen
- arguments (like 'fancy', 'lace', ...) and 'screen' are also
- safe to use from within hold mode. 'screen' is ignored but all
- other commands are performed invisible. When the screen is
- open again everything will have happened as if the screen
- was never closed
- - New flags for 'gadgets' command: 'TABCYCLE' and 'STRINGEXT'
- - In spite of all the previous improvements the new PowerVisor is
- still smaller than version 1.31!
- - I REALLY solved the bug in 'quit' and 'debug' for 68000 processors.
- From now on, debugging should work on the 'little' Amiga's :-)
- This is the main reason that I release this new version so soon
- without waiting for more new features to emerge (I still have a
- lot of new features to implement)
- - Bug solved in CLI commandline parsing. Using the '-d' option at the
- end of all other options would discard the previous options. This
- is solved
- - The PowerVisor parser is a little bit extended to allow calling
- library functions with conflicting names (with variables). You
- can now use quotes for library functions (and you can't use
- quotes for variables) so if you want to call the Input dos.library
- function (for example), you can use 'input'()
- - Bug solved for dummy debug nodes (created with 'debug d') and
- the source level debugging. This bug was also visible with the
- 'duse' command even if you didn't use the source level debugger
- - Little bug solved in 'assem.pv' (see 'asm' alias for assembler)
- - Bug solved in 'fit' command (bug was introduced in the previous
- version 1.40). This command simply didn't work
- - 'cmdline.pv' ARexx script (a primitive way to support debugging
- on a normal shell (maybe even remote debugging)) is a little
- better
- - Fixed bug for 68040 processors (Amiga 4000). You needed the '-m0'
- option for PowerVisor to run on an 68040 processor. This is not
- needed anymore
- - Address errors are fully recoverable on the 68000 processor. Thanks
- to John Harper for making the necessary adjustments to my source
- - PowerVisor uses 'MultiView' (AmigaDOS 3.0) instead of 'AmigaGuide'
- for the hypertext documentation. You have to change the alias
- defined in the PowerVisor-startup file to use 'AmigaGuide' again
- - New 'mhelp' alias to use 'MultiView' instead of 'AmigaGuide'
- ('MultiView' is new in AmigaDOS 3.0)
- - You can also use the 'f' (flow) option after the 'n' trace option
- (instead of tracing multiple instructions, this traces multiple
- branches)
- - You can also use the 'f' (flow) option after the 'j' trace option.
- This option is recommended for 'trace j' if you have an 68020
- or higher
- - New 'r' option after 'trace n', 'trace g', 'trace p', 'trace r',
- 'trace q', 'trace c' and 'trace j'. With this option PowerVisor
- will singlestep the current routine and will execute all
- subroutines called from within this routine at full speed. Using
- this feature you can limit your singlestep condition to the
- current routine
- - The documentation for 'trace' is better (in 'CommandRef.guide')
- - New 'while' command to repeat actions
- - New 'checksum' function to compute the checksum for a region of
- memory
- - New 'trace z' (with optional 'f' and 'r') to trace until the
- checksum for a given memory range changes
-